home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Design
/
WB Collection.iso
/
datatypes
/
debox_dt
/
source
/
asmsupport.asm
next >
Wrap
Assembly Source File
|
1996-04-07
|
7KB
|
373 lines
******************************************************************************
*
* Flowerpower's DeBox Datatype
*
* Written by Christian Buchner and David N. Junod
*
******************************************************************************
* AsmSupport.asm
*
SECTION Code,CODE
* _XOR_Memory ****************************************************************
XDEF _XOR_Memory
_XOR_Memory MOVEQ #12,D1
CMP.L D1,D0
BCS.S lbC000930
MOVE.L A0,D1
BTST #0,D1
BEQ.S lbC0008EC
MOVE.B (A1)+,D1
EOR.B D1,(A0)+
SUBQ.L #1,D0
lbC0008EC MOVE.L A1,D1
BTST #0,D1
BNE.S lbC000930
MOVE.L D0,D1
ANDI.W #3,D1
MOVE.W D1,-(SP)
MOVEM.L D2-D7,-(SP)
MOVEQ #$18,D1
BRA.S lbC000916
lbC000904 MOVEM.L (A1)+,D2-D7
EOR.L D2,(A0)+
EOR.L D3,(A0)+
EOR.L D4,(A0)+
EOR.L D5,(A0)+
EOR.L D6,(A0)+
EOR.L D7,(A0)+
SUB.L D1,D0
lbC000916 CMP.L D1,D0
BCC.S lbC000904
MOVEM.L (SP)+,D2-D7
LSR.L #2,D0
BEQ.S lbC00092A
lbC000922 MOVE.L (A1)+,D1
EOR.L D1,(A0)+
SUBQ.L #1,D0
BNE.S lbC000922
lbC00092A MOVE.W (SP)+,D0
BEQ.S lbC00093C
BRA.S lbC000934
lbC000930 TST.L D0
BEQ.S lbC00093C
lbC000934 MOVE.B (A1)+,D1
EOR.B D1,(A0)+
SUBQ.L #1,D0
BNE.S lbC000934
lbC00093C RTS
* _Method_1 ******************************************************************
XDEF _Method_1
lbC0005CC SUBQ.L #1,D7
BLT.S lbC0005E2
ADDQ.L #1,D5
CMP.L D6,D5
BGT.S lbC0005E6
MOVE.B (A1)+,(A3)+
CMPI.B #7,D4
BEQ.S lbC0005F0
ADDQ.B #1,D4
BRA.S lbC0005FA
lbC0005E2 BRA.W lbC000666
lbC0005E6 BRA.W lbC0005E6
_Method_1 MOVEM.L D2-D7/A0-A4,-(SP)
MOVEQ #0,D5
lbC0005F0 SUBQ.L #1,D7
BLT.W lbC000666
MOVEQ #0,D4
MOVE.B (A1)+,D3
lbC0005FA BTST D4,D3
BNE.S lbC0005CC
SUBQ.L #2,D7
BLT.S lbC000666
MOVEQ #0,D0
MOVEQ #0,D2
MOVE.B (A1)+,D0
MOVE.B (A1)+,D2
MOVE.L D2,D1
ANDI.B #15,D1
ADDQ.W #3,D1
ASL.W #4,D2
CLR.B D2
ADD.W D2,D0
CMP.L D0,D5
BLT.S lbC000662
NEG.W D0
LEA 0(A3,D0.W),A4
ADD.L D1,D5
CMP.L D6,D5
BGT.S lbC000662
ADD.L D1,D1
NEG.L D1
; Seems the SAS-C assembler has got a bug
*** JMP lbC000654(PC,D1.W)
; using DC.W instead
DC.W $4EFB,$1026
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
MOVE.B (A4)+,(A3)+
lbC000654 CMP.L D6,D5
BEQ.S lbC000666
CMPI.B #7,D4
BEQ.S lbC0005F0
ADDQ.B #1,D4
BRA.S lbC0005FA
lbC000662 MOVEQ #0,D0
BRA.S lbC00066C
lbC000666 CMP.L D5,D6
BNE.S lbC000662
MOVE.L D5,D0
lbC00066C MOVEM.L (SP)+,D2-D7/A0-A4
RTS
* _Method_2 ******************************************************************
XDEF _Method_2
_Method_2 MOVEM.L D2-D7/A0-A5,-(SP)
SUBQ.L #2,D7
BLT.W lbC00071A
MOVE.W (A1)+,D5
MOVE.L A2,D3
SUB.L A3,D3
MOVE.L A3,D4
ADDQ.L #1,D4
MOVEA.L A3,A5
ADDA.L D6,A5
MOVEA.L A3,A4
MOVE.W D5,D0
ADDQ.W #1,D0
ADDA.W D0,A4
lbC000692 SUBQ.L #1,D7
BLT.W lbC00071A
MOVEQ #0,D2
MOVE.B (A1)+,D2
BEQ.S lbC0006C8
BGT.S lbC0006F8
NEG.B D2
SUBQ.L #1,D7
BLT.S lbC00071A
MOVE.B (A1)+,D1
SUBQ.L #1,D2
BLT.S lbC00071A
lbC0006AC MOVE.B D1,(A3)
ADDA.W D5,A3
CMPA.L A5,A3
BCC.S lbC0006BA
lbC0006B4 DBRA D2,lbC0006AC
BRA.S lbC000692
lbC0006BA MOVEA.L D4,A3
ADDQ.L #1,D4
CMPA.L D4,A4
BNE.S lbC0006B4
DBRA D2,lbC00071A
BRA.S lbC00071E
lbC0006C8 SUBQ.L #1,D7
BLT.S lbC00071A
MOVE.B (A1)+,D2
MOVEA.L D3,A2
ADDA.L A3,A2
SUBQ.L #1,D2
BLT.S lbC00071A
lbC0006D6 MOVE.B (A2),(A3)
ADDA.W D5,A3
CMPA.L A5,A3
BCC.S lbC0006E6
ADDA.W D5,A2
lbC0006E0 DBRA D2,lbC0006D6
BRA.S lbC000692
lbC0006E6 MOVEA.L D4,A3
ADDQ.L #1,D4
MOVEA.L D3,A2
ADDA.L A3,A2
CMPA.L D4,A4
BNE.S lbC0006E0
DBRA D2,lbC00071A
BRA.S lbC00071E
lbC0006F8 SUB.L D2,D7
BLT.S lbC00071A
SUBQ.W #1,D2
lbC0006FE MOVE.B (A1)+,(A3)
ADDA.W D5,A3
CMPA.L A5,A3
BCC.S lbC00070C
lbC000706 DBRA D2,lbC0006FE
BRA.S lbC000692
lbC00070C MOVEA.L D4,A3
ADDQ.L #1,D4
CMPA.L D4,A4
BNE.S lbC000706
DBRA D2,lbC00071A
BRA.S lbC00071E
lbC00071A MOVEQ #0,D0
BRA.S lbC000720
lbC00071E MOVE.L D6,D0
lbC000720 MOVEM.L (SP)+,D2-D7/A0-A5
RTS
* _Method_4 ******************************************************************
XDEF _Method_4
_Method_4 MOVEM.L D2-D7/A0-A5,-(SP)
MOVEA.L D6,A4
MOVEQ #0,D5
lbC000832 SUBQ.L #1,D7
BLT.W lbC0008C8
MOVEQ #0,D4
MOVE.B (A1)+,D3
lbC00083C BTST D4,D3
BNE.S lbC0008AA
SUBQ.L #2,D7
BLT.W lbC0008C8
MOVEQ #0,D0
MOVEQ #0,D2
MOVE.B (A1)+,D0
MOVE.B (A1)+,D2
MOVE.L D2,D1
ANDI.B #15,D1
ADDQ.W #3,D1
ASL.W #4,D2
CLR.B D2
ADD.W D2,D0
SUB.L D1,D7
BLT.S lbC0008C4
CMP.L D0,D5
BLT.S lbC0008C4
NEG.W D0
LEA 0(A3,D0.W),A5
ADD.L D1,D5
ADD.L D1,D5
CMP.L A4,D5
BGT.S lbC0008C4
SUBQ.W #1,D1
lbC000874 MOVE.B (A1)+,D0
MOVE.B D0,D2
ASR.B #4,D2
MOVE.B (A5)+,D6
SUB.B D2,D6
MOVE.B D6,(A3)+
BTST #3,D0
BNE.S lbC00088C
ANDI.B #15,D0
BRA.S lbC000890
lbC00088C ORI.B #$F0,D0
lbC000890 MOVE.B (A5)+,D6
SUB.B D0,D6
MOVE.B D6,(A3)+
DBRA D1,lbC000874
CMP.L A4,D5
BEQ.S lbC0008C8
CMPI.B #7,D4
BEQ.S lbC000832
ADDQ.B #1,D4
BRA.W lbC00083C
lbC0008AA SUBQ.L #1,D7
BLT.S lbC0008C8
ADDQ.L #1,D5
CMP.L A4,D5
BGT.S lbC0008C4
MOVE.B (A1)+,(A3)+
CMPI.B #7,D4
BEQ.W lbC000832
ADDQ.B #1,D4
BRA.W lbC00083C
lbC0008C4 MOVEQ #0,D0
BRA.S lbC0008CE
lbC0008C8 CMP.L A4,D5
BNE.S lbC0008C4
MOVE.L D5,D0
lbC0008CE MOVEM.L (SP)+,D2-D7/A0-A5
RTS
* _Method_5 ******************************************************************
XDEF _Method_5
_Method_5 MOVEM.L D3-D7/A0-A5,-(SP)
SUBQ.L #3,D7
BLT.S lbC00081A
MOVE.W (A1)+,D5
MOVE.B (A1)+,D3
MOVE.L A3,D4
ADDQ.L #1,D4
MOVEA.L A3,A5
ADDA.L D6,A5
MOVEA.L A3,A4
MOVE.W D5,D0
ADDQ.W #1,D0
ADDA.W D0,A4
lbC0007D0 SUBQ.L #1,D7
BLT.W lbC00081A
MOVE.B (A1)+,D0
CMP.B D0,D3
BEQ.S lbC0007EE
MOVE.B D0,(A3)
ADDA.W D5,A3
CMPA.L A5,A3
BCS.S lbC0007D0
MOVEA.L D4,A3
ADDQ.L #1,D4
CMPA.L D4,A4
BNE.S lbC0007D0
BRA.S lbC00081E
lbC0007EE SUBQ.L #2,D7
BLT.W lbC00081A
MOVEQ #0,D1
MOVE.B (A1)+,D1
BEQ.S lbC00081A
SUBQ.W #1,D1
MOVE.B (A1)+,D0
lbC0007FE MOVE.B D0,(A3)
ADDA.W D5,A3
CMPA.L A5,A3
BCC.S lbC00080C
lbC000806 DBRA D1,lbC0007FE
BRA.S lbC0007D0
lbC00080C MOVEA.L D4,A3
ADDQ.L #1,D4
CMPA.L D4,A4
BNE.S lbC000806
DBRA D1,lbC00081A
BRA.S lbC00081E
lbC00081A MOVEQ #0,D0
BRA.S lbC000824
lbC00081E TST.L D7
BNE.S lbC00081A
MOVE.L D6,D0
lbC000824 MOVEM.L (SP)+,D3-D7/A0-A5
RTS
******************************************************************************
END